In a conventional memory system, for example, a memory system containing a NAND flash memory, the logical-physical address translation that translates a logical address into a physical address is managed in blocks as an erase unit of the NAND flash memory.
However, when the address translation is managed in blocks, the management unit is the block and thus, it is necessary to access the whole block even if a read/write (hereinafter, a random read/write) of data of a size smaller than the block size is done. Therefore, it is difficult to increase a random read/write speed.
If the block is divided into smaller sizes (pages) for management, by contrast, the random read/write speed can be increased because only the relevant page needs to be accessed.
When the address translation is managed in pages, data in the block is split into pages and thus, it becomes necessary to always secure free blocks by rearranging data by garbage collection. The garbage collection is a function that rearranges data arranged by being distributed in a plurality of blocks in some block to release a block in which only unnecessary data remains.
However, if data in the block intended for garbage collection is damaged for some reason and cannot be read, the garbage collection fails and the block cannot be released. As a result, the block is used up and the system fails.